﻿using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Uow;

namespace FeatureManagement;

public interface IFeatureManagementStore
{
    Task<string> GetOrNullAsync(string name, string providerName, string providerKey);

    Task<List<FeatureNameValue>> GetOrNullAsync(string providerName, string providerKey, List<string> names);

    Task<List<FeatureNameValue>> GetAllAsync(string providerName, string providerKey);

    Task SetAsync(string name, string value, string providerName, string providerKey);

    Task SetAsync(string providerName, string providerKey, List<FeatureNameValue> nameValues);

    Task DeleteAsync(string name, string providerName, string providerKey);

    Task DeleteAsync(string providerName, string providerKey, List<string> names);

    Task DeleteAllAsync(string providerName, string providerKey);
}
